package io.nutz.nutzsite.module.open.api;

import io.nutz.nutzsite.module.sys.models.Updlog;
import io.nutz.nutzsite.module.sys.services.UpdlogService;
import io.nutz.nutzsite.common.base.Result;
import org.nutz.dao.Cnd;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.lang.Strings;
import org.nutz.lang.Lang;
import org.nutz.log.Log;
import org.nutz.lang.Lang;
import org.nutz.log.Logs;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.POST;
import org.nutz.mvc.annotation.Param;
import org.nutz.plugins.slog.annotation.Slog;
import io.nutz.nutzsite.common.utils.JWTUtil;
import io.nutz.nutzsite.common.annotation.AccessToken;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Date;
/**
 * 系统更新日志 信息操作处理
 * 
 * @author lrw
 * @date 2020-02-23
 */
@IocBean
@At("/api/Apiupdlog")
public class ApiUpdlogController {
	private static final Log log = Logs.get();

	@Inject
	private UpdlogService updlogService;

	/**
	 * 查询系统更新日志列表
	 */
	@At
	@Ok("json")
	@AccessToken
	public Object list(@Param("pageNum")int pageNum,
					   @Param("pageSize")int pageSize,
					   @Param("name") String name,
					   @Param("beginTime") Date beginTime,
					   @Param("endTime") Date endTime,
					   @Param("orderByColumn") String orderByColumn,
					   @Param("isAsc") String isAsc,
					   HttpServletRequest req) {
		String uid = JWTUtil.getId();
		Cnd cnd = Cnd.NEW();
		if (!Strings.isBlank(name)){
			//cnd.and("name", "like", "%" + name +"%");
		}
		if(Lang.isNotEmpty(beginTime)){
			cnd.and("create_time",">=", beginTime);
		}
		if(Lang.isNotEmpty(endTime)){
			cnd.and("create_time","<=", endTime);
		}
		List<Updlog> list = updlogService.query(pageNum,pageSize,cnd);
		return Result.success("system.success", list);
	}

    /**
     * 查询一条记录
     */
    @At
    @Ok("json")
	@AccessToken
    public Object get(@Param("id") String id) {
        return updlogService.fetch(id);
    }

	/**
	 * 新增保存系统更新日志
	 */
	@At
	@POST
	@Ok("json")
	@AccessToken
	public Object addDo(@Param("..") Updlog updlog,HttpServletRequest req) {
		try {
			updlogService.insert(updlog);
			return Result.success("system.success");
		} catch (Exception e) {
			return Result.error("system.error");
		}
	}


	/**
	 * 修改保存系统更新日志
	 */
	@At
	@POST
	@Ok("json")
	@AccessToken
	public Object editDo(@Param("..") Updlog updlog,HttpServletRequest req) {
		try {
			if(Lang.isNotEmpty(updlog)){
				updlog.setUpdateBy(JWTUtil.getId());
				updlog.setUpdateTime(new Date());
				updlogService.update(updlog);
			}
			return Result.success("system.success");
		} catch (Exception e) {
			return Result.error("system.error");
		}
	}

	/**
	 * 删除系统更新日志
	 */
	@At("/remove")
	@Ok("json")
	@AccessToken
	public Object remove(@Param("ids")String[] ids, HttpServletRequest req) {
		try {
			updlogService.delete(ids);
			return Result.success("system.success");
		} catch (Exception e) {
			return Result.error("system.error");
		}
	}

}
